/**
 * 自定义缓存读写， 通过$store(key[, value]) 使用，返回Promise
 * @function
 *
 * @param key {String} 要读写的key值
 * @param [value] {*} 写入内容
 *
 * @return {Promise}
 * */

import storage from '@system.storage'

export default (...arg) => {
  let [key, value] = arg;
  if (arg.length === 1) {
    return storage.get({key}).then(val => {
      if (val.data) {
        try {
          return JSON.parse(val.data);
        } catch (e) {
          return val.data;
        }
      } else {
        return val.data;
      }
    });
  } else {
    if (typeof (value) === 'string' && value.length) {
      return storage.set({key, value: value});
    } else if (typeof (value) === 'object' && JSON.stringify(value).length > 2) {
      return storage.set({key, value: JSON.stringify(value)});
    } else {
      return storage.set({key, value: value});
    }
  }
}